var bcrypt = require('bcryptjs');
var jwt = require('jsonwebtoken');

const {User,findUserByAccount} = require('../../models/User');
const {createToken} =  require('../../plugins/utils/tokenUtils');

module.exports = async (req,res) => {
	const {account, password} = req.body; // 接收请求参数
	// 如果用户没有输入帐号或密码
	if (account.trim().length == 0 || password.trim().length == 0) {
    return res.status(400).json({errCode:1, msg: '帐号或者密码不能为空'});
    } 
	// 根据 邮箱地址/手机号 查询用户信息
	// 如果查询到了用户则user变量的值是对象类型,对象中存储的是用户信息
	// 如果没有查询到用户 user变量为空
	let user = await findUserByAccount(account);
	// 查询到了用户
	if (user) {
		// 将客户端传递过来的密码和用户信息中的密码进行比对
		let isValid =  bcrypt.compareSync(password, user.password);
		// 如果密码比对成功
		if ( isValid ) {
            let user_id = user.user_id;
            let phoneNumber = user.phoneNumber
            let token = createToken({user_id:user_id,phoneNumber:phoneNumber})
			res.json({errCode:'0',msg:"登录成功",token:token,data:{user:user}});
		} else {
			// 密码比对失败
			res.status(400).send({errCode:'1',msg:"密码错误"})
		}
	} else {
		// 没有查询到用户
		res.status(400).send({errCode:'1',msg:"用户不存在"})
	}
}